/**
 * @file        gpio.h
 *
 * @brief       Platform independent GPIO APIs
 *
 * @date        Nov 15, 2012
 *
 * @author      Ashwin Vijayakumar
 *
 * @copyright   (C) 2012 Ashwin Vijayakumar <ashwin@afflatustech.com>
 * @copyright   (C) 2012 Afflatus Techtronics <www.afflatustech.com>
 *
 * This program is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License as published by the
 * Free Software Foundation; either version 2 of the License, or (at your
 * option) any later version.
 */

#ifndef GPIO_H_
#define GPIO_H_

/* ---- System headers ------------------------------------------------------ */
/* ---- Local headers ------------------------------------------------------- */
#include "stm32f4xx.h"
#include "gpio-stm32f4xx.h"

/* ---- Typedef section (lower_case_type) ----------------------------------- */
/* ---- Constants section (ALL_CAPS) ---------------------------------------- */
/* ---- Macros section (ALL_CAPS) ------------------------------------------- */
/* ---- Global variables section (lower_case) ------------------------------- */
/* ---- Function prototypes section (lower_case) ---------------------------- */
/* ---- Getter/setter method section (get/set/is_lower_case) ---------------- */

/**
 * @fn          gpio_direction_input
 */
static inline void
gpio_direction_input( gpio_port_type* gpio_port, uint32_t gpio_pin_num )
{
  gpio_stm32f4xx_direction_input( gpio_port, (int)gpio_pin_num );
}

/**
 * @fn          gpio_direction_output
 */
static inline void
gpio_direction_output( gpio_port_type* gpio_port, uint32_t gpio_pin_num )
{
  gpio_stm32f4xx_direction_output( gpio_port, gpio_pin_num );
}

/**
 * @fn          gpio_get_value
 */
static inline int
gpio_get_value( gpio_port_type* gpio_port, int value )
{
  return( gpio_stm32f4xx_get_value( gpio_port ) );
}

/**
 * @fn          gpio_set_value
 */
static inline void
gpio_set_value( gpio_port_type* gpio_port, int value )
{
  gpio_stm32f4xx_set_value( gpio_port, value );
}

/**
 * @fn          gpio_get_pin
 */
static inline int
gpio_get_pin( gpio_port_type* gpio_port, gpio_pin_type gpio_pin )
{
  return( gpio_stm32f4xx_get_pin( gpio_port, gpio_pin ) );
}

/**
 * @fn          gpio_set_pin
 */
static inline void
gpio_set_pin( gpio_port_type* gpio_port, gpio_pin_type gpio_pin )
{
  gpio_stm32f4xx_set_pin( gpio_port, gpio_pin );
}

/**
 * @fn          gpio_reset_pin
 */
static inline void
gpio_reset_pin( gpio_port_type* gpio_port, gpio_pin_type gpio_pin )
{
  gpio_stm32f4xx_reset_pin( gpio_port, gpio_pin );
}

/**
 * @fn          gpio_toggle_pin
 */
static inline void
gpio_toggle_pin( gpio_port_type* gpio_port, gpio_pin_type gpio_pin )
{
  gpio_stm32f4xx_toggle_pin( gpio_port, gpio_pin );
}

#endif /* GPIO_H_ */

/* ==== End of file ================= Copyright (C) 2012 Afflatus Techtronics */
